package co.com.sewebpoint.dao;

import java.util.List;

import co.com.sewebpoint.exception.DaoExceptionSE;
import co.com.sewebpoint.model.Solicitud;
import co.com.sewebpoint.model.Usuario;

/***
 * 
 * @author Esteban Hurtado y ara Tamayo
 * @version 1.0
 * 
 * Interfaz de DAO para la tabla Solicitud provee todos los posibles metodos
 *
 */

public interface SolicitudDAO {
	
	
	
	/**
	 * Metodo que inserta un Solicitud en la base de datos 
	 * @param  Solicitud a insertar
	 * @return Solicitud Insertado
	 * @throws DaoExceptionSE Ocurre algun error en la conexion a la base de datos
	 *
	 */
	
	public Solicitud insert(Solicitud solicitud) throws DaoExceptionSE;
	
	
	
	/**
	 * Metodo que modifica los valores de la Solicitud dependiendo de una Solicitud enviada
	 * @param  Solicitud a modificar
	 * @return Solicitud Modificado
	 * @throws DaoExceptionSE Ocurre algun error en la conexion a la base de datos
	 *
	 */
	
	public Solicitud update(Solicitud solicitud) throws DaoExceptionSE;
	
	
	
	/**
	 * Metodo que elimina una Solicitud del sistema de forma logica , dandole el campo habilitado a false
	 * @param  Solicitud a eliminar
	
	 * @throws DaoExceptionSE Ocurre algun error en la conexion a la base de datos
	 *
	 */
	
	public void delete(Solicitud solicitud) throws DaoExceptionSE;
	
	
	

	
	
	/**
	 * Metodo que retorna la lista de solicitudes existentes en la base de datos 
	 * 
	 * @return Lista de las Solicituds retornadas de la base de datos
	 * @throws DaoExceptionSE Ocurre algun error en la conexion a la base de datos
	 *
	 */
	
	public List<Solicitud> getAllItems() throws DaoExceptionSE;
	
	/**
	 * Metodo que retorna los datos de una solicitud dado su codigo
	 * 
	 * @param  id codigo de la solicitud
	 * @return solicitud encontrado dado su codigo
	 * @throws DaoExceptionSE Ocurre algun error en la conexion a la base de datos
	 *
	 */
	
	public Solicitud getKeyItem(Integer id) throws DaoExceptionSE;
	
	

}
